package ivansalvadori.diariopushweb.dao.rdb;



import ivansalvadori.diariopushweb.dao.UsuarioDAO;
import ivansalvadori.diariopushweb.model.Usuario;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;

public class RDBUsuarioDAO extends SimpleJdbcDaoSupport implements UsuarioDAO {

	@Override
	public int inserir(Usuario usuario) {
		SimpleJdbcInsert insert = new SimpleJdbcInsert(getDataSource());
		insert.setTableName("Usuario");
		insert.setGeneratedKeyName("codigo");

		Map<String, Object> parameters = new HashMap<String, Object>(6);
		parameters.put("nome", usuario.getNome());
		parameters.put("email", usuario.getEmail());
		parameters.put("senha", usuario.getSenha());
		parameters.put("cidade", usuario.getCidade());
		parameters.put("estado", usuario.getEstado());
		parameters.put("situacao", usuario.getSituacao());
		return insert.executeAndReturnKey(parameters).intValue();

	}

	@Override
	public Usuario getByEmail(String email) {

		try {

			Usuario usuario = getJdbcTemplate().queryForObject(
					"select nome, codigo, senha, email from Usuario where email = ?",
					new Object[] { email }, new RowMapper<Usuario>() {
						@Override
						public Usuario mapRow(ResultSet rs, int rowNum)
								throws SQLException {
							Usuario usuario = new Usuario();
							usuario.setCodigo(rs.getInt(("codigo")));
							usuario.setNome((rs.getString("nome")));
							usuario.setSenha((rs.getString("senha")));
							usuario.setEmail((rs.getString("email")));
							return usuario;
						}
					});

			return usuario;
		} catch (Exception e) {
			return null;
		}
	}

}
